home *** CD-ROM | disk | FTP | other *** search
/ Level 2005 Christmas (DVD) / Level_2005-XMAS_134_DVD_Knightshift.iso / Demos / Ski Racing 2006 / setup1.cab / DataCommonShadersDX9Normal_Specular_1BitAlpha.vsh < prev    next >
Encoding:
Text File  |  2005-11-03  |  2.8 KB  |  122 lines

  1. vs.1.1
  2.  
  3. ;dx9 stuff
  4. ;********
  5. dcl_position v0
  6. dcl_normal v1
  7. dcl_binormal v2
  8. dcl_tangent v3
  9. dcl_texcoord0 v4
  10.  
  11. ;Constant map from the NSF.  
  12. ;
  13. ;CM_Defined      WorldViewProjTranspose  0    0
  14. ;CM_Constant     const_1_1_1_255         4    1    1.0,1.0,1.0,765.01
  15. ;CM_Global       DirLight1Direction      5    1   
  16. ;CM_Global       DaCameraPosition        6    1
  17. ;CM_Constant     Half                    7    1   0.5,0.5,0.5,0.5   
  18. ;CM_Defined      InvWorldTranspose       8      0
  19.  
  20.  
  21. m4x4    oPos, v0, c0
  22.  
  23. ; Find light vector in object space
  24. mov r5, c5                   ;Get the light direction in world space.
  25. m3x3 r4, r5, c8              ;Transform to object space with inverse world mat
  26.  
  27. ; Normalize light vector.
  28.  
  29. dp3 r3.w, r4, r4
  30. rsq r2.w, r3.w
  31. mul r0.xyz, r4, r2.w
  32.  
  33. mad r7.xyz, c7.x, v1, c7.y
  34. mad r8.xyz, c7.x, v2, c7.y
  35. mad r9.xyz, c7.x, v3, c7.y
  36.  
  37. m3x3 oD0.xyz, r0, r7
  38.  
  39.  
  40. ;Specular calculation
  41. ;mov r1, v0
  42.  
  43. m4x4 r1, v0, c16 ; to world
  44.  
  45. add r5, -r1, c6
  46. ;mov r5, c6
  47.  
  48. dp3 r3.x, r5.xyz, r5.xyz
  49. rsq r3.xyz, r3.x
  50. mul r5.xyz, r5.xyz, r3.xxx
  51.  
  52. add  r2.xyz, r5.xyz, c5         ;L + V
  53.  
  54. dp3  r4.x, r2.xyz, r2.xyz      ;normalize inv view vec
  55. rsq  r4.xyz, r4.x
  56. mul  r2.xyz, r2.xyz, r4.xyz
  57.  
  58. ;mov r4, r5
  59. m3x3 r4, r2, c8              ;Transform to object space with inverse world mat
  60.  
  61. ; Normalize light vector.
  62. dp3 r3.x, r4.xyz, r4.xyz
  63. rsq r3.xyz, r3.x
  64. mul r4.xyz, r4.xyz, r3.xxx
  65.  
  66. m3x3 oD1.xyz, r4, r7
  67.  
  68. ;dp3 r7.x, r4, v3             ;Tangent
  69. ;dp3 r7.y, r4, v2             ;Binormal
  70. ;dp3 r7.z, r4, v1             ;Normal
  71. ;mad oD1.xyz, r7.xyz, c7, c7    ;Scale and bias since texcoord in the pixel shader
  72.  
  73. ;mov r2, -c6        ;find inv view vector
  74.  
  75. ;m3x3 r4, r2, c8              ;Transform to object space with inverse world mat
  76.  
  77. ;dp3 r3.x, r2, r2
  78. ;rsq r2.x, r3.x
  79. ;mul r3, r2.xyz, r2.xxx
  80.  
  81.  
  82. ;add  r2.xyz, r3.xyz, r0         ;L + V
  83.  
  84. ;dp3  r4.x, r2.xyz, r2.xyz      ;normalize inv view vec
  85. ;rsq  r4.xyz, r4.x
  86. ;mul  r2.xyz, r2.xyz, r4.xyz
  87.  
  88.  
  89. ;r2 now holds the view vector.  We need to get the half vector.
  90. ;add  r3.xyz, r2.xyz, c5         ;L + V
  91. ;m3x3 r3, r3, c8
  92. ;dp3 r8.x, v5, r3              ;Tangent
  93. ;dp3 r8.y, v4, r3            ;Binormal
  94. ;dp3 r8.z, v3, r3           ;Normal
  95.  
  96. ;mad oD1.xyz, r7.xyz, c7, c7
  97.  
  98.  
  99.  
  100.  
  101. ;Ambient Lighting - rest will be done in ps
  102. ;mov r1, c10                  ;Move in the ambient material so we can multiply
  103. ;mul oD0, r1, c9              ;Modulate the ambient light by material
  104.  
  105. ; Texture coordinates for the base map and normal map and gloss.
  106. mov  oT0.xy, v4.xy
  107. mov  oT1.xy, v4.xy
  108. mov  oT2.xy, v4.xy
  109.  
  110. mov r3, c12
  111. m4x4 r1, v0, c16
  112. mul r3.xy, c12.xy, r1.xy
  113. add r3.x, r3.x, c7.x
  114. ;mov r3.y, -r3.y
  115. sub r3.y, c12.z, r3.y
  116. ;add r3.x, r4.x
  117. mov oT3.xy, r3.xy
  118. ;mul  oT3.xy, v0.xy, c9.xy
  119. ;mov  oT3.xy, v7.xy
  120.  
  121.  
  122.